/*
 * @lc app=leetcode.cn id=1 lang=cpp
 *
 * [1] 两数之和
 */

// @lc code=start
class Solution
{
public:
    vector<int> twoSum(vector<int> &nums, int target)
    {
        //两数之和 两个数位置不能相同
        //如果是两遍哈希表 第二次查找的时候如果有两个相同的数会每次查找相同的数
        //所以如果是两遍哈希表的话 要么对查找的值进行检查要么使用multimap并且使用equal
        //这里使用一遍哈希表 可以避免这个问题
        unordered_map<int, int> m;
        for (int i = 0; i < nums.size(); i++)
        {
            if (m.find(target - nums[i]) != m.end())
            {
                return {m[target - nums[i]], i};
            }
            m.insert(pair<int, int>(nums[i], i));
        }
        return {};
    }
};
// @lc code=end
